package com.wujian.love.service.impl;

import java.util.List;

import cn.hutool.core.convert.Convert;
import com.wujian.love.contants.RedisContants;
import com.wujian.love.domin.Product;
import com.wujian.love.mapper.ProductMapper;
import com.wujian.love.service.IProductService;
import com.wujian.love.utils.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

/**
 * 商品 服务层实现
 * 
 * @author cdw
 * @date 2020-06-17
 */
@Service
public class ProductServiceImpl implements IProductService
{
	@Autowired
	private ProductMapper productMapper;

	@Autowired
	private RedisUtil redisUtil;

	/**
     * 查询商品信息
     * 
     * @param id 商品ID
     * @return 商品信息
     */
    @Override
	public Product selectProductById(Integer id)
	{
	    return productMapper.selectProductById(id);
	}
	
	/**
     * 查询商品列表
     * 
     * @param product 商品信息
     * @return 商品集合
     */
	@Override
	public List<Product> selectProductList(Product product)
	{
	    return productMapper.selectProductList(product);
	}
	
    /**
     * 新增商品
     * 
     * @param product 商品信息
     * @return 结果
     */
	@Override
	public int insertProduct(Product product)
	{
	    return productMapper.insertProduct(product);
	}
	
	/**
     * 修改商品
     * 
     * @param product 商品信息
     * @return 结果
     */
	@Override
	public int updateProduct(Product product)
	{
	    return productMapper.updateProduct(product);
	}

	/**
     * 删除商品对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteProductByIds(String ids)
	{
		return productMapper.deleteProductByIds(Convert.toStrArray(ids));
	}

	/**
	 * @Author WuJian
	 * @Description //APP端接口查询商品
	 * @Date 9:54 2020/6/17
	 * @Param [id]
	 * @return com.wujian.love.domin.Product
	 **/
	@Override
	public Product getProductInfoForAPP(Integer id) {
		Product info = (Product) redisUtil.get(RedisContants.PRODUCT_KEY+"_"+id);
		if(info == null){
			Product product = productMapper.selectProductById(id);
			return product;
		}
		return info;
	}

	/**
	 * @Author WuJian
	 * @Description //APP端接口新增商品
	 * @Date 11:10 2020/6/17
	 * @Param [info]
	 * @return void
	 **/
	@Override
	public void addProuctForAPP(Product info) {
		int row = productMapper.insertProduct(info);
		if(row > 0){
			redisUtil.set(RedisContants.PRODUCT_KEY+"_"+info.getId(),info);
		}


	}

}
